home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Amiga
/
World of Amiga.iso
/
archive
/
assembly
/
angint3.s.lha
/
intro.s
< prev
next >
Wrap
Text File
|
1980-02-15
|
30KB
|
1,367 lines
; AGAIN AN ANGELS INTRO... EASYER TO USE...
;type...
;SEKA>ltext: <ENTER>
;SEKA> <ESC> to get into editor...
;EDIT THE TEXT...AND NOW... ASSEMBLE INCLUDE THE IMAGES AND ENJOY...
>extern "df0:font",font,4352
>extern "df0:angels",angels,4704
>extern "df0:music",data,9412
org $50000
load $50000
s:
;THX TO PICKEL & WERNER OF AFL FOR THIS REPLAY ROUTINE !!
speed = 6 ; play speed
h_sound = 0
h_length = 4
h_frequency = 6
h_volume = 8
s_attack_step = 0
s_attack_delay = 1
s_decay_step = 2
s_decay_delay = 3
s_sustain = 4
s_release_step = 6
s_release_delay = 7
s_volume = 8
s_vibrator_wait = 9
s_vibrator_step = 10
s_vibrator_length = 11
s_bendrate = 12
s_portamento = 13
s_sample = 14
s_table_delay = 15
s_arpeggio = 16
s_sound_length = 24
s_repeat = 26
s_repeat_length = 28
s_table = 30
s_sounddata = 78
c_hardware = 0
c_dma = 4
c_sounddata = 6
c_frequency = 10
c_sound_table = 12
c_sound_table_cnt = 16
c_sound_table_del = 17
c_track = 18
c_track_cnt = 22
c_block = 24
c_block_cnt = 28
c_vibrator_wait = 32
c_vibrator_length = 33
c_vibrator_pos = 34
c_vibrator_cmp = 35
c_vibrator_freq = 36
c_old_frequency = 38
c_frequency_data = 40
c_actual_volume = 41
c_attack_delay = 42
c_decay_delay = 43
c_sustain = 44
c_release_delay = 46
c_play_speed = 47
c_bendrate_freq = 48
c_transpose = 50
c_status = 51
c_arpeggio_cnt = 52
c_arpeggio_data = 53
c_arpeggio_on = 54
c_effect_number = 55
c_effect_data = 56
start:
movem.l d0-d7/a0-a6,-(a7)
move.l 4,a6
lea gfxname,a1
jsr -408(a6)
move.l d0,gfxbase
jsr -132(a6)
move.w #$03e0,$dff096
lea $60000,a0
loop1:
move.l #0,(a0)+
cmp.l #$7f000,a0
bne loop1
move.w #$87d0,$dff096
move.l #$09f00000,$dff040
move.l #$ffffffff,$dff044
move.w #0,$dff064
move.w #42,$dff066
move.l #0,d5
move.l #3,d7
vertical:
move.l #3,d6
move.l #$60000,d2
add.l d5,d2
move.l #angels,d1
horizontal:
move.l d1,d3
move.l d2,d4
move.l #2,d0
blitloop:
move.l d3,$dff050
move.l d4,$dff054
move.w #$1c07,$dff058
add.l #1568,d3
add.l #25088,d4
dbf d0,blitloop
add.l #14,d2
dbf d6,horizontal
add.l #6272,d5
dbf d7,vertical
move.w #$03e0,$dff096
bsr kies
move.l #text,keeper
lea lettercop,a0
add.w #2,a0
move.l #$72ffc,d0
move.l #1,d3
PlaneLoop3:
swap d0
move.w d0,(a0)
add.w #4,a0
swap d0
move.w d0,(a0)
add.w #4,a0
add.l #8832,d0
dbf d3,PlaneLoop3
lea logopl,a0
add.w #2,a0
move.l #$60000,d0
move.l #2,d3
PlaneLoop:
swap d0
move.w d0,(a0)
add.w #4,a0
swap d0
move.w d0,(a0)
add.w #4,a0
add.l #25088,d0
dbf d3,PlaneLoop
move.l #newcopper,$dff080
clr.w $dff088
move.l $6c,oldirq
move.l #newirq,$6c
bset #1,$bfe001 ; power on/off
bsr DM_init
move.w #$87e0,$dff096
move.b #$87,$bfd100
loop:
;move.w #$000f,$dff180
cmp.w #1,uit
beq end
btst #6,$bfe001
bne loop
end:
move.w #$f,$dff096 ; stop all sound
bclr #1,$bfe001 ; power on
move.l oldirq,$6C
move.l gfxbase,a0
move.l 38(a0),$dff080
move.l 4,a6
jsr -138(a6)
move.l gfxbase,a1
jsr -414(a6)
movem.l (a7)+,d0-d7/a0-a6
rts
oldirq: dc.l 0
newirq:
movem.l d0-d6/a0-a6,-(a7)
bsr DM_play
bsr scrollback
goone:
cmp.l #0,klaar
bne back
move.l verander,d0
move.l d0,klaar
ReturnScroll:
clr.l d2
move.l keeppos,a0
move.w keepcount,d0
add.w #2,keepcount
add.w d0,a0
move.w (a0),d2
move.l keeper,d1
move.l d1,keeper2
add.l d2,keeper2
move.l keeper2,a0
move.b (a0),d4
lea letters,a1
lea adds,a2
move.l #69,d6
sub.l d5,d5
move.w (a2)+,d5
search:
cmp.b (a1)+,d4
beq place
move.w (a2)+,d5
sub.l #1,d6
cmp.l #0,d6
beq notfound
bra search
notfound:
cmp.b #$FF,d4
BNE.S back
move.l #text,keeper
move.w #0,keepcount
move.w #0,sprcount
BRA ReturnScroll
back:
sub.l #1,klaar
sub.b #1,lamer
cmp.b #0,lamer
bne goone
move.b #3,lamer
backk:
move.w #$70,$dff09c
movem.l (a7)+,d0-d6/a0-a6
rte
kies:
move.l #7,d7
MOVEM.L D1-D2,-(A7)
MOVE.W $DFF006,D2
MOVE.L RND,D1
SWAP D1
EOR.W D2,D1
MOVE.W D7,D2
SUBQ.W #1,D2
RANDOM2:
ADD.L D1,D1
BHI.S RANDOM3
EOR.L #$1D872B41,D1
RANDOM3:
LSR.W #1,D2
BNE.S RANDOM2
MOVE.L D1,RND
MULU D7,D1
CLR.W D1
SWAP D1
MOVE.L D1,D7
MOVEM.L (A7)+,D1-D2
mulu #360,d7
move.l #plaats,keeppos
add.l d7,keeppos
rts
RND:DC.L "RAND"
place:
move.l keeppos,a0
lea addspr,a2
cmp.w #358,sprcount
bne gospr1
move.w #0,keepcount
add.l #180,keeper
move.l d1,keeper2
move.l #2048,klaar
bsr kies
gospr1:
cmp.w #360,sprcount
bne gospr
move.w #0,sprcount
gospr:
move.w sprcount,d0
add.w d0,a0
add.w #2,sprcount
move.w (a0),d4
mulu #2,d4
add.w d4,a2
move.w (a2),d4
move.l #$09f00000,$dff040
move.l #$ffffffff,$dff044
move.l #font,d1
move.l #$73000,d2
move.w #32,$dff064
move.w #44,$dff066
add.l d5,d1
add.l d4,d2
move.l #1,d7
sprloop:
move.l d1,$dff050
move.l d2,$dff054
move.w #$401,$dff058
add.l #2176,d1
add.l #8832,d2
dbf d7,sprloop
bra back
scrollback:
clr.l d0
clr.l d1
clr.l d2
clr.l d5
cmp.b #112,scrollcounter
bne goscroll
move.b #0,scrollcounter
goscroll:
move.b scrollcounter,d0
add.b #1,scrollcounter
lea scrolladds,a0
add.w d0,a0
move.b (a0),d5 ;KEEP THE ADDS FOR THE VERTICAL SCROLL
lea scrollsubs,a0
add.w d0,a0
move.b (a0),d0
divu #16,d0
swap d0
move.w #15,d1
lea shifter,a0
add.w #2,a0
sub.w d0,d1
move.w d1,(a0) ;SHIFTER COPIED TO COPPERLIST
mulu #56,d5 ;MULU HEIGHT
move.l #$60000,d6
add.l d5,d6
swap d0
mulu #2,d0
add.w d0,d6 ;RIGHT BITPLANE POINTET FOUND FOR NOW!!!
lea logopl,a0
add.w #2,a0
move.l #2,d7
bitloop:
swap d6
move.w d6,(a0)
add.w #4,a0
swap d6
move.w d6,(a0)
add.w #4,a0
add.l #25088,d6
dbf d7,bitloop
rts
;************************
DM_play:
movem.l d0-d7/a0-a6,-(a7)
lea channel1(pc),a6
bsr.L DM_calc_frequency
lea channel2(pc),a6
bsr.L DM_calc_frequency
lea channel3(pc),a6
bsr.L DM_calc_frequency
lea channel4(pc),a6
bsr.L DM_calc_frequency
move.w #$800f,$dff096
DM_sample_handler:
move.w #200,d0
DM_swait:
dbra d0,DM_swait
lea channel1(pc),a6
move.l c_hardware(a6),a4
move.l c_sounddata(a6),a5
tst.b s_sample(a5)
beq.s DM_no_sample1
move.w s_repeat_length(a5),h_length(a4)
moveq #0,d7
move.w s_repeat(a5),d7
add.l a5,d7
add.l #s_table,d7
move.l d7,h_sound(a4)
DM_no_sample1:
lea channel2(pc),a6
move.l c_hardware(a6),a4
move.l c_sounddata(a6),a5
tst.b s_sample(a5)
beq.s DM_no_sample2
move.w s_repeat_length(a5),h_length(a4)
moveq #0,d7
move.w s_repeat(a5),d7
add.l a5,d7
add.l #s_table,d7
move.l d7,h_sound(a4)
DM_no_sample2:
lea channel3(pc),a6
move.l c_hardware(a6),a4
move.l c_sounddata(a6),a5
tst.b s_sample(a5)
beq.s DM_no_sample3
move.w s_repeat_length(a5),h_length(a4)
moveq #0,d7
move.w s_repeat(a5),d7
add.l a5,d7
add.l #s_table,d7
move.l d7,h_sound(a4)
DM_no_sample3:
lea channel4(pc),a6
move.l c_hardware(a6),a4
move.l c_sounddata(a6),a5
tst.b s_sample(a5)
beq.s DM_no_sample4
move.w s_repeat_length(a5),h_length(a4)
moveq #0,d7
move.w s_repeat(a5),d7
add.l a5,d7
add.l #s_table,d7
move.l d7,h_sound(a4)
DM_no_sample4:
movem.l (a7)+,d0-d7/a0-a6
rts
DM_calc_frequency:
move.l c_hardware(a6),a4
move.l c_sounddata(a6),a5
subq.b #1,c_play_speed(a6)
bne.L DM_block_con
move.b play_speed,c_play_speed(a6)
tst.l c_block_cnt(a6)
bne.s DM_check_block
DM_track_step:
move.l c_track(a6),a0
move.w c_track_cnt(a6),d7
move.w (a0,d7.w),d0
cmp.w #-1,d0
bne.s DM_track_con
move.w 2(a0,d7.w),d0
and.w #$7ff,d0
asl.w #1,d0
move.w d0,c_track_cnt(a6)
bra.s DM_track_step
DM_track_con:
move.b d0,c_transpose(a6)
asr.l #2,d0
and.l #%00000000000000000011111111000000,d0
add.l blocks(pc),d0
move.l d0,c_block(a6)
addq.w #2,c_track_cnt(a6)
DM_check_block:
move.l c_block(a6),a0
add.l c_block_cnt(a6),a0
tst.b 2(a0)
beq.s DM_no_new_effect
move.b 2(a0),c_effect_number(a6)
move.b 3(a0),c_effect_data(a6)
DM_no_new_effect:
moveq #0,d0
move.b 1(a0),d0
beq.L DM_test_effect
add.b c_transpose(a6),d0
move.b d0,c_frequency_data(a6)
move.w c_dma(a6),d0
sub.w #$8000,d0
move.w d0,$dff096
moveq #0,d0
move.b d0,c_status(a6)
move.w d0,c_bendrate_freq(a6)
move.w d0,c_arpeggio_cnt(a6)
move.b d0,c_arpeggio_on(a6)
move.b 2(a0),c_effect_number(a6)
move.b 3(a0),c_effect_data(a6)
lea snd_table(pc),a1
move.b (a0),d0
asl.l #2,d0
move.l (a1,d0.l),d0
move.l d0,c_sounddata(a6)
move.l d0,a5
add.l #s_table,d0
move.l d0,c_sound_table(a6)
clr.b c_sound_table_cnt(a6)
tst.b s_sample(a5)
beq.s DM_no_sample_clear
clr.w s_table(a5)
move.l d0,h_sound(a4)
DM_no_sample_clear:
move.w s_sound_length(a5),d0
asr.w #1,d0
move.w d0,h_length(a4)
move.b s_vibrator_wait(a5),c_vibrator_wait(a6)
move.b s_vibrator_length(a5),d0
move.b d0,c_vibrator_length(a6)
move.b d0,c_vibrator_pos(a6)
asl.b #1,d0
move.b d0,c_vibrator_cmp(a6)
clr.b c_actual_volume(a6)
clr.b c_sound_table_del(a6)
clr.b c_sound_table_cnt(a6)
clr.b c_attack_delay(a6)
clr.b c_decay_delay(a6)
move.w s_sustain(a5),c_sustain(a6)
clr.b c_release_delay(a6)
DM_test_effect:
addq.l #4,c_block_cnt(a6)
cmp.l #64,c_block_cnt(a6)
bne.s DM_block_con
clr.l c_block_cnt(a6)
DM_block_con:
tst.b s_sample(a5)
bne.s DM_portamento_handler
tst.b c_sound_table_del(a6)
beq.s DM_sound_table_handler
subq.b #1,c_sound_table_del(a6)
bra.s DM_portamento_handler
DM_sound_table_handler:
move.b s_table_delay(a5),c_sound_table_del(a6)
DM_sound_read_again:
move.l c_sound_table(a6),a0
moveq #0,d6
move.b c_sound_table_cnt(a6),d6
cmp.b #48,d6
bmi.s DM_sound_read_c
clr.b c_sound_table_cnt(a6)
moveq #0,d6
DM_sound_read_c:
add.l d6,a0
moveq #0,d7
move.b (a0),d7
bpl.s DM_new_sounddata
cmp.b #$ff,d7
bne.s DM_sound_new_speed
move.b 1(a0),d7
move.b d7,c_sound_table_cnt(a6)
bra.s DM_sound_read_again
DM_sound_new_speed:
and.b #127,d7
move.b d7,s_table_delay(a5)
addq.b #1,c_sound_table_cnt(a6)
bra.s DM_sound_read_again
DM_new_sounddata:
asl.l #5,d7
add.l #s_sounddata,d7
add.l c_sounddata(a6),d7
move.l d7,h_sound(a4) ; Set hardware sound data
addq.b #1,c_sound_table_cnt(a6)
DM_portamento_handler:
tst.b s_portamento(a5)
beq.s DM_vibrator_handler
move.w c_frequency(a6),d1
bne.s DM_porta_con
moveq #0,d0
lea freq_table(pc),a1
move.b c_frequency_data(a6),d0
asl.w #1,d0
move.w (a1,d0.w),d0
add.w c_bendrate_freq(a6),d0
move.w d0,c_frequency(a6)
bra.s DM_vibrator_handler
DM_porta_con:
moveq #0,d0
moveq #0,d2
move.b s_portamento(a5),d2
lea freq_table(pc),a1
move.b c_frequency_data(a6),d0
asl.w #1,d0
move.w (a1,d0.w),d0
add.w c_bendrate_freq(a6),d0
cmp.w d0,d1
beq.s DM_vibrator_handler
blo.s DM_porta_low
sub.w d2,d1
cmp.w d0,d1
bpl.s DM_porta_high_con
move.w d0,c_frequency(a6)
bra.s DM_vibrator_handler
DM_porta_high_con:
move.w d1,c_frequency(a6)
bra.s DM_vibrator_handler
DM_porta_low:
add.w d2,d1
cmp.w d0,d1
bmi.s DM_porta_low_con
move.w d0,c_frequency(a6)
bra.s DM_vibrator_handler
DM_porta_low_con:
move.w d1,c_frequency(a6)
DM_vibrator_handler:
tst.b c_vibrator_wait(a6)
beq.s DM_calc_vibrator
subq.b #1,c_vibrator_wait(a6)
bra.s DM_bendrate_handler
DM_calc_vibrator:
moveq #0,d0
moveq #0,d1
move.b c_vibrator_pos(a6),d0
move.b d0,d2
move.b s_vibrator_step(a5),d1
mulu d1,d0
move.w d0,c_vibrator_freq(a6)
btst #0,c_status(a6)
bne.s DM_vibrator_minus
DM_vibrator_plus:
addq.b #1,d2
cmp.b c_vibrator_cmp(a6),d2
bne.s DM_vibrator_no_reset
eor.b #1,c_status(a6)
DM_vibrator_no_reset:
move.b d2,c_vibrator_pos(a6)
bra.s DM_bendrate_handler
DM_vibrator_minus:
subq.b #1,d2
bne.s DM_vibrator_no_reset2
eor.b #1,c_status(a6)
DM_vibrator_no_reset2:
move.b d2,c_vibrator_pos(a6)
DM_bendrate_handler:
moveq #0,d0
move.l c_sounddata(a6),a1
move.b s_bendrate(a1),d0
bpl.s DM_rate_minus
neg.b d0
add.w d0,c_bendrate_freq(a6)
bra.s DM_effect_handler
DM_rate_minus:
sub.w d0,c_bendrate_freq(a6)
DM_effect_handler:
moveq #0,d0
moveq #0,d1
move.b c_effect_data(a6),d0
move.b c_effect_number(a6),d1
lea effect_table(pc),a1
and.b #$1f,d1
asl.l #2,d1
move.l (a1,d1.w),a1
jsr (a1)
DM_arpeggio_handler:
move.l a5,a1
add.l #s_arpeggio,a1
move.b c_arpeggio_cnt(a6),d0
move.b (a1,d0),d1
addq.b #1,c_arpeggio_cnt(a6)
and.b #%00000111,c_arpeggio_cnt(a6)
DM_store_frequency:
moveq #0,d0
lea freq_table(pc),a1
move.b c_frequency_data(a6),d0
add.b d1,d0
asl.w #1,d0
move.w (a1,d0.w),d0
moveq #0,d1
moveq #0,d2
move.b c_vibrator_length(a6),d1
move.b s_vibrator_step(a5),d2
mulu d2,d1
sub.w d1,d0
add.w c_bendrate_freq(a6),d0
tst.b s_portamento(a5)
beq.s DM_store_no_port
move.w c_frequency(a6),d0
bra.s DM_store_port
DM_store_no_port:
clr.w c_frequency(a6)
DM_store_port:
add.w c_vibrator_freq(a6),d0
move.w d0,h_frequency(a4)
DM_volume_handler:
moveq #0,d1 ; actual volume
move.b c_actual_volume(a6),d1
move.b c_status(a6),d0
and.b #%00001110,d0
tst.b d0
bne.s DM_test_decay
tst.b c_attack_delay(a6)
beq.s DM_attack_handler
subq.b #1,c_attack_delay(a6)
bra.L DM_volume_exit
DM_attack_handler:
move.b s_attack_delay(a5),c_attack_delay(a6)
add.b s_attack_step(a5),d1
cmp.b #64,d1
blo.s DM_attack_con
or.b #%00000010,d0
or.b #%00000010,c_status(a6)
moveq.b #64,d1
DM_attack_con:
DM_test_decay:
cmp.b #%00000010,d0
bne.s DM_test_sustain
tst.b c_decay_delay(a6)
beq.s DM_decay_handler
subq.b #1,c_decay_delay(a6)
bra.s DM_volume_exit
DM_decay_handler:
move.b s_decay_delay(a5),c_decay_delay(a6)
move.b s_volume(a5),d2
sub.b s_decay_step(a5),d1
cmp.b d2,d1
bhi.s DM_decay_con
move.b s_volume(a5),d1
or.b #%00000110,d0
or.b #%00000110,c_status(a6)
DM_decay_con:
DM_test_sustain:
cmp.b #%00000110,d0
bne.s DM_test_release
tst.w c_sustain(a6)
beq.s DM_sustain_handler
subq.w #1,c_sustain(a6)
bra.s DM_volume_exit
DM_sustain_handler:
or.b #%00001110,d0
or.b #%00001110,c_status(a6)
DM_test_release:
cmp.b #%00001110,d0
bne.s DM_volume_exit
tst.b c_release_delay(a6)
beq.s DM_release_handler
subq.b #1,c_release_delay(a6)
bra.s DM_volume_exit
DM_release_handler:
move.b s_release_delay(a5),c_release_delay(a6)
sub.b s_release_step(a5),d1
bpl.s DM_release_con
and.b #%00001001,c_status(a6)
moveq #0,d1
DM_release_con:
DM_volume_exit:
move.b d1,c_actual_volume(a6)
move.w d1,h_volume(a4)
rts
; ---- INIT MUSIC ----
all_check = 0
trk1 = 4
DM_init:
lea track1(pc),a1
moveq #24,d7
DM_init_loop:
move.l #data+[26*4],(a1)+
dbra d7,DM_init_loop
moveq #23,d6
lea track1+[24*4](pc),a1
DM_init_loop2:
lea data+4(pc),a0
move.l d6,d7
DM_init_loop3:
move.l (a0)+,d0
add.l d0,(a1)
dbra d7,DM_init_loop3
subq.l #4,a1
dbra d6,DM_init_loop2
lea $dff0a0,a0
lea channel1(pc),a6
bsr.s DM_setup
add.l #16,a0
lea channel2(pc),a6
bsr.s DM_setup
add.l #16,a0
lea channel3(pc),a6
bsr.s DM_setup
add.l #16,a0
lea channel4(pc),a6
bsr.s DM_setup
move.w #$8001,channel1+c_dma
move.w #$8002,channel2+c_dma
move.w #$8004,channel3+c_dma
move.w #$8008,channel4+c_dma
move.l track1(pc),channel1+c_track
move.l track2(pc),channel2+c_track
move.l track3(pc),channel3+c_track
move.l track4(pc),channel4+c_track
rts
DM_setup:
move.l a0,c_hardware(a6)
move.w #16,h_length(a0)
clr.w h_volume(a0)
move.l #safe_zero,c_sounddata(a6)
clr.w c_frequency(a6)
move.l snd_table(pc),d0
add.l #16,d0
move.l d0,c_sound_table(a6)
clr.w c_sound_table_cnt(a6)
clr.w c_track_cnt(a6)
move.l blocks(pc),c_block(a6)
clr.l c_block_cnt(a6)
clr.l c_vibrator_wait(a6)
clr.l c_vibrator_freq(a6)
clr.l c_frequency_data(a6)
move.l #1,c_sustain(a6)
clr.l c_bendrate_freq(a6)
clr.l c_arpeggio_cnt(a6)
clr.w c_effect_data(a6)
rts
; ---- EFFECT ROUTINES ----
eff0:
rts
eff1:
and.b #15,d0 ; set play speed
beq.s eff1_exit
move.b d0,play_speed
eff1_exit:
rts
eff2:
sub.w d0,c_bendrate_freq(a6) ; slide freq up
rts
eff3:
add.w d0,c_bendrate_freq(a6) ; slide freq down
rts
eff4:
tst.b d0
beq led_off
bset #1,$bfe001 ; led on/off
rts
led_off:
bclr #1,$bfe001
rts
eff5:
move.b d0,s_vibrator_wait(a5) ; set vibrator wait
rts
eff6:
move.b d0,s_vibrator_step(a5) ; set vibrator step
rts
eff7:
move.b d0,s_vibrator_length(a5); set vibrator length
rts
eff8:
move.b d0,s_bendrate(a5) ; set bendrate
rts
eff9:
move.b d0,s_portamento(a5) ; set portamento
rts
effA:
cmp.b #65,d0
bmi.s effA_con
moveq.b #64,d0
effA_con:
move.b d0,s_volume(a5) ; set volume
rts
effB:
move.b d0,s_arpeggio(a5) ; set arp 1
rts
effC:
move.b d0,s_arpeggio+1(a5) ; set arp 2
rts
effD:
move.b d0,s_arpeggio+2(a5) ; set arp 3
rts
effE:
move.b d0,s_arpeggio+3(a5) ; set arp 4
rts
effF:
move.b d0,s_arpeggio+4(a5) ; set arp 5
rts
eff10:
move.b d0,s_arpeggio+5(a5) ; set arp 6
rts
eff11:
move.b d0,s_arpeggio+6(a5) ; set arp 7
rts
eff12:
move.b d0,s_arpeggio+7(a5) ; set arp 8
rts
eff13:
move.b d0,s_arpeggio(a5) ; set arp 1 / 5
move.b d0,s_arpeggio+4(a5)
rts
eff14:
move.b d0,s_arpeggio+1(a5) ; set arp 2 / 6
move.b d0,s_arpeggio+5(a5)
rts
eff15:
move.b d0,s_arpeggio+2(a5) ; set arp 3 / 7
move.b d0,s_arpeggio+6(a5)
rts
eff16:
move.b d0,s_arpeggio+3(a5) ; set arp 4 / 8
move.b d0,s_arpeggio+7(a5)
rts
eff17:
cmp.b #65,d0 ; set attack step
bmi.s eff17_con
moveq.b #64,d0
eff17_con:
move.b d0,s_attack_step(a5)
rts
eff18:
move.b d0,s_attack_delay(a5) ; set attack delay
rts
eff19:
cmp.b #65,d0 ; set decay step
bmi.s eff19_con
moveq.b #64,d0
eff19_con:
move.b d0,s_decay_step(a5)
rts
eff1A:
move.b d0,s_decay_delay(a5) ; set decay delay
rts
eff1B:
move.b d0,s_sustain(a5) ; set sustain byte 1
rts
eff1C:
move.b d0,s_sustain+1(a5) ; set sustain byte 2
rts
eff1D:
cmp.b #65,d0 ; set release step
bmi.s eff1D_con
move.b #64,d0
eff1D_con:
move.b d0,s_release_step(a5)
rts
eff1E:
move.b d0,s_release_delay(a5) ; set release delay
rts
effect_table:
dc.l eff0 ,eff1 ,eff2 ,eff3 ,eff4 ,eff5 ,eff6 ,eff7
dc.l eff8 ,eff9 ,effA ,effB ,effC ,effD ,effE ,effF
dc.l eff10,eff11,eff12,eff13,eff14,eff15,eff16,eff17
dc.l eff18,eff19,eff1A,eff1B,eff1C,eff1D,eff1E,eff0
play_speed:
dc.b speed
even
safe_zero:
blk.b 16,0
freq_table:
dc.w 0000,6848,6464,6096,5760,5424,5120,4832,4560,4304,4064,3840
dc.w 3616,3424,3232,3048,2880,2712,2560,2416,2280,2152,2032,1920
dc.w 1808,1712,1616,1524,1440,1356,1280,1208,1140,1076,0960,0904
dc.w 0856,0808,0762,0720,0678,0640,0604,0570,0538,0508,0480,0452
dc.w 0428,0404,0381,0360,0339,0320,0302,0285,0269,0254,0240,0226
dc.w 0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
dc.w 0113,0113,0113,0113,0113,0113,0113,0113,0113,0113,0113,0113
channel1:
dc.l $dff0a0 ; hardware pointer
dc.w $8001 ; DMA value
dc.l 0 ; instrument pointer
dc.w 0 ; frequency
dc.l 0 ; sound table pointer
dc.b 0 ; sound table counter
dc.b 0 ; sound table delay
dc.l 0 ; track pointer
dc.w 0 ; track counter
dc.l 0 ; block pointer
dc.l 0 ; block counter
dc.b 0 ; vibrator wait
dc.b 0 ; vib length
dc.b 0 ; vib position
dc.b 0 ; vib length + & - (compare)
dc.w 0 ; vib add freq
dc.w 0 ; old freq for portamento
dc.b 0 ; freq_dat
dc.b 0 ; actual volume
dc.b 0 ; attack delay
dc.b 0 ; decay delay
dc.w 0 ; sustain
dc.b 0 ; release delay
dc.b 1 ; play speed
dc.w 0 ; bendrate freq
dc.b 0 ; transpose
dc.b 0 ; status
dc.b 0 ; arpeggio counter
dc.b 0 ; arpeggio data
dc.b 0 ; arpeggio on/off
dc.b 0 ; effect number
dc.b 0 ; effect data
even
channel2:
blk.b channel2-channel1,0
channel3:
blk.b channel2-channel1,0
channel4:
blk.b channel2-channel1,0
track1:
dc.l 0
track2:
dc.l 0
track3:
dc.l 0
track4:
dc.l 0
blocks:
dc.l 0
snd_table:
blk.l 20,0
;************************
newcopper:
dc.l $01200007,$01228000,$01240007,$01268000
dc.l $01280007,$012a8000,$012c0007,$012e8000
dc.l $01300007,$01328000,$01340007,$01368000
dc.l $01380007,$013a8000,$013c0007,$013e8000
dc.l $008e1f78,$00901cc1
dc.l $00920028,$009400d8
dc.l $0108000a
dc.l $010a0000
shifter:
dc.l $01020000
dc.l $01040040
dc.l $01800000,$01820000,$0184000b,$0186022b
dc.l $0188034c,$018a056d,$018c088d,$018e0aae
dc.l $01900000,$01920999,$01940666,$01960444
dc.l $01005600
logopl:
dc.l $00e00000,$00e20000
dc.l $00e80000,$00ea0000
dc.l $00f00000,$00f20000
dc.l $00e40007,$00e68000
dc.l $00ec0007,$00ee8000
dc.l $6009fffe
lettercop:
dc.l $00e40000,$00e60000
dc.l $00ec0000,$00ee0000
dc.l $ff09fffe
dc.l $00e40007,$00e68000
dc.l $00ec0007,$00ee8000
dc.l $fffffffe
oldcopper:
dc.l 0
even
gfxname: dc.b "graphics.library",0
even
gfxbase:
dc.l 0
even
;ONLY USE THIS CHARS...
;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,'!?()-/abcdefghijk+%:<>
;a = BLOK
;j = LETTER
;k = PHONE
;<> = WINGS !!!
;USE AS MANY SCREENS AS YOU WANT... BEWARE... EACH LINE HAS 40 CHARS
;EACH SCREEN HAS 9 LINES !!!!!!!!!
text:
dc.b " biiiiiiiiiiiih "
dc.b " c < ANGELS > g "
dc.b " deeeeeeeeeeeef "
dc.b " "
dc.b " PRESENTS "
dc.b " ANOTHER COOL "
dc.b " "
dc.b " CRACK! "
dc.b " "
dc.b " k CALL OUR BBS'S k "
dc.b "--------------------"
dc.b " "
dc.b " JUST PUT "
dc.b " THE BBS "
dc.b " NUMBERS "
dc.b " IN HERE !"
dc.b " "
dc.b " "
dc.b " j OR WRITE TO j "
dc.b " "
dc.b "P.O.BOX 10, OBERCORN"
dc.b " LUXEMBURG "
dc.b " "
dc.b " P.O.BOX 31, 9910 "
dc.b "MARIAKERKE, BELGIUM "
dc.b " "
dc.b " "
dc.b " TRASH CODING BY "
dc.b " "
dc.b " "
dc.b " < VINNY > "
dc.b " "
dc.b " "
dc.b "GREETZ TO ALL ANGELS"
dc.b " MEMBERS. "
dc.b " "
dc.b " "
dc.b " INTRO DONE BY "
dc.b " "
dc.b " "
dc.b " ZAK'N VINNY "
dc.b " "
dc.b " "
dc.b " "
dc.b " < THE END > "
blk.b 180,$ff
even
letters:
dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,'!?()-/abcdefghijk"
dc.b "+%:<> "
even
VINNY:
dc.l $54484953,$20434f4f,$4c20494e,$54524f20
dc.l $57415320,$434f4445,$44204259,$2056494e
dc.l $4e592e2e,$2e205448,$45205649,$4e2d4d41
dc.l $4e2e2e2e,$20475245,$45545a20,$544f2041
dc.l $4c4c204f,$54484552,$204d454d,$42455253
dc.l $20212121
adds:
dc.w $0000,$0002,$0004,$0006,$0008,$000a,$000c,$000e
dc.w $0010,$0012,$0014,$0016,$0018,$001a,$001c,$001e,$0020
dc.w $0220,$0222,$0224,$0226,$0228,$022a,$022c,$022e
dc.w $0230,$0232,$0234,$0236,$0238,$023a,$023c,$023e,$0240
dc.w $0440,$0442,$0444,$0446,$0448,$044a,$044c,$044e
dc.w $0450,$0452,$0454,$0456,$0458,$045a,$045c,$045e,$0460
dc.w $0660,$0662,$0664,$0666,$0668,$066a,$066c,$066e
dc.w $0670,$0672,$0674,$0676,$0678
even
addspr:
dc.w 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38
dc.w 736,738,740,742,744,746,748,750,752,754,756,758,760,762
dc.w 764,766,768,770,772,774
dc.w $5c0,$5c2,$5c4,$5c6,$5c8,$5ca,$5cc,$5ce,$5d0,$5d2
dc.w $5d4,$5d6,$5d8,$5da,$5dc,$5de,$5e0,$5e2,$5e4,$5e6
dc.w $8a0,$8a2,$8a4,$8a6,$8a8,$8aa,$8ac,$8ae,$8b0,$8b2
dc.w $8b4,$8b6,$8b8,$8ba,$8bc,$8be,$8c0,$8c2,$8c4,$8c6
dc.w $b80,$b82,$b84,$b86,$b88,$b8a,$b8c,$b8e,$b90,$b92
dc.w $b94,$b96,$b98,$b9a,$b9c,$b9e,$ba0,$ba2,$ba4,$ba6
dc.w $e60,$e62,$e64,$e66,$e68,$e6a,$e6c,$e6e,$e70,$e72
dc.w $e74,$e76,$e78,$e7a,$e7c,$e7e,$e80,$e82,$e84,$e86
dc.w $1140,$1142,$1144,$1146,$1148,$114a,$114c,$114e,$1150,$1152
dc.w $1154,$1156,$1158,$115a,$115c,$115e,$1160,$1162,$1164,$1166
dc.w $1420,$1422,$1424,$1426,$1428,$142a,$142c,$142e,$1430,$1432
dc.w $1434,$1436,$1438,$143a,$143c,$143e,$1440,$1442,$1444,$1446
dc.w $1700,$1702,$1704,$1706,$1708,$170a,$170c,$170e,$1710,$1712
dc.w $1714,$1716,$1718,$171a,$171c,$171e,$1720,$1722,$1724,$1726
sprcount:
dc.w 0
plaats:
dc.w 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
dc.w 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
dc.w 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
dc.w 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
dc.w 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
dc.w 100,101,102,103,104,105,106,107,108,109,110,111,112,113
dc.w 114,115,116,117,118,119
dc.w 120,121,122,123,124,125,126,127,128,129,130,131,132,133
dc.w 134,135,136,137,138,139
dc.w 140,141,142,143,144,145,146,147,148,149,150,151,152,153
dc.w 154,155,156,157,158,159
dc.w 160,161,162,163,164,165,166,167,168,169,170,171,172,173
dc.w 174,175,176,177,178,179
plaats2:
dc.w 0
dc.w 20,1
dc.w 40,21,2
dc.w 60,41,22,3
dc.w 80,61,42,23,4
dc.w 100,81,62,43,24,5
dc.w 120,101,82,63,44,25,6
dc.w 140,121,102,83,64,45,26,7
dc.w 160,141,122,103,84,65,46,27,8
dc.w 161,142,123,104,85,66,47,28,9
dc.w 162,143,124,105,86,67,48,29,10
dc.w 163,144,125,106,87,68,49,30,11
dc.w 164,145,126,107,88,69,50,31,12
dc.w 165,146,127,108,89,70,51,32,13
dc.w 166,147,128,109,90,71,52,33,14
dc.w 167,148,129,110,91,72,53,34,15
dc.w 168,149,130,111,92,73,54,35,16
dc.w 169,150,131,112,93,74,55,36,17
dc.w 170,151,132,113,94,75,56,37,18
dc.w 171,152,133,114,95,76,57,38,19
dc.w 172,153,134,115,96,77,58,39
dc.w 173,154,135,116,97,78,59
dc.w 174,155,136,117,98,79
dc.w 175,156,137,118,99
dc.w 176,157,138,119
dc.w 177,158,139
dc.w 178,159
dc.w 179
plaats3:
dc.w 90,89,69,70,71,91,111,110,109,108,88,68,48,49,50,51,52
dc.w 72,92,112,132,131,130,129,128,127,107,87,67,47,27
dc.w 28,29,30,31,32,33,53,73,93,113,133,153,152,151,150
dc.w 149,148,147,146,126,106,86,66,46,26,6,7,8,9,10,11,12,13,14
dc.w 34,54,74,94,114,134,154,174,173,172,171,170,169,168,167
dc.w 166,165,145,125,105,85,65,45,25,5
dc.w 15,35,55,75,95,115,135,155,175
dc.w 164,144,124,104,84,64,44,24,4
dc.w 16,36,56,76,96,116,136,156,176
dc.w 163,143,123,103,83,63,43,23,3
dc.w 17,37,57,77,97,117,137,157,177
dc.w 162,142,122,102,82,62,42,22,2
dc.w 18,38,58,78,98,118,138,158,178
dc.w 161,141,121,101,81,61,41,21,1
dc.w 19,39,59,79,99,119,139,159,179
dc.w 160,140,120,100,80,60,40,20,0
plaats4:
dc.w 179,0,178,1,177,2,176,3,175,4,174,5,173,6,172,7,171,8,170,9
dc.w 169,10,168,11,167,12,166,13,165,14,164,15,163,16,162,17,161
dc.w 18,160,19
dc.w 140,39,141,38,142,37,143,36,144,35,145,34,146,33,147,32
dc.w 148,31,149,30,150,29,151,28,152,27,153,26,154,25,155,24
dc.w 156,23,157,22,158,21,159,20
dc.w 139,40,138,41,137,42,136,43,135,44,134,45,133,46,132,47,131
dc.w 48,130,49,129,50,128,51,127,52,126,53,125,54,124,55,123,56
dc.w 122,57,121,58,120,59
dc.w 100,79,101,78,102,77,103,76,104,75,105,74,106,73,107,72,108
dc.w 71,109,70,110,69,111,68,112,67,113,66,114,65,115,64,116,63
dc.w 117,62,118,61,119,60
dc.w 99,80,98,81,97,82,96,83,95,84,94,85,93,86,92,87,91,88,90,89
plaats5:
dc.w 0,161,20,141,40,121,60,101,80,81,100,61,120,41,140,21,160,1
dc.w 2,163,22,143,42,123,62,103,82,83,102,63,122,43,142,23,162,3
dc.w 4,165,24,145,44,125,64,105,84,85,104,65,124,45,144,25,164,5
dc.w 6,167,26,147,46,127,66,107,86,87,106,67,126,47,146,27,166,7
dc.w 8,169,28,149,48,129,68,109,88,89,108,69,128,49,148,29,168,9
dc.w 10,171,30,151,50,131,70,111,90,91,110,71,130,51,150,31,170,11
dc.w 12,173,32,153,52,133,72,113,92,93,112,73,132,53,152,33,172,13
dc.w 14,175,34,155,54,135,74,115,94,95,114,75,134,55,154,35,174,15
dc.w 16,177,36,157,56,137,76,117,96,97,116,77,136,57,156,37,176,17
dc.w 18,179,38,159,58,139,78,119,98,99,118,79,138,59,158,39,178,19
plaats6:
dc.w 2,22,42,41,40,20,0,1,21
dc.w 5,25,45,44,43,23,3,4,24
dc.w 8,28,48,47,46,26,6,7,27
dc.w 11,31,51,50,49,29,9,10,30
dc.w 14,34,54,53,52,32,12,13,33
dc.w 17,37,57,56,55,35,15,16,36
dc.w 19,39,59,58,38,18
dc.w 62,82,102,101,100,80,60,61,81
dc.w 65,85,105,104,103,83,63,64,84
dc.w 68,88,108,107,106,86,66,67,87
dc.w 71,91,111,110,109,89,69,70,90
dc.w 74,94,114,113,112,92,72,73,93
dc.w 77,97,117,116,115,95,75,76,96
dc.w 79,99,119,118,98,78
dc.w 122,142,162,161,160,140,120,121,141
dc.w 125,145,165,164,163,143,123,124,144
dc.w 128,148,168,167,166,146,126,127,147
dc.w 131,151,171,170,169,149,129,130,150
dc.w 134,154,174,173,172,152,132,133,153
dc.w 137,157,177,176,175,155,135,136,156
dc.w 139,159,179,178,158,138
plaats7:
dc.w 92,46,124,59,136,150,29,1,101,15,55,6,107,99,153,165,23
dc.w 60,12,114,49,85,97,128,160,21,52,148,17,179,175,63,11,110
dc.w 35,142,58,152,169,4,156,74,103,31,89,162,67,119,10,112,71
dc.w 22,123,108,33,98,154,131,82,0,27,146,95,149,64,26,113,177
dc.w 104,140,116,76,7,66,100,61,115,48,126,134,139,172,143,42
dc.w 19,30,129,138,44,147,50,121,133,37,25,122,159,166,24,16,2
dc.w 158,120,88,94,79,170,163,86,9,111,34,20,174,81,39,28,145
dc.w 70,62,105,38,32,155,91,144,40,161,171,168,83,73,118,53
dc.w 14,45,137,57,141,102,36,8,173,65,178,3,18,78,106,5,132,164
dc.w 56,127,77,157,41,167,54,68,135,80,43,96,84,13,125,117,47
dc.w 75,87,51,151,109,93,69,72,90,130,176
keeper:
dc.l 0
klaar:
dc.l 1
verander:
dc.l 1
test:
dc.b 1
even
blk.b 100,0
kloot:
dc.w 0
checkg:
dc.b 0
even
keeper2:
dc.l 0
keeper3:
dc.l 0
keeppos:
dc.l 0
keepcount:
dc.w 0
uit:
dc.w 0
scrollcounter:
dc.b 0
scrolladds:
dc.b 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
dc.b 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41
dc.b 42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
dc.b 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
dc.b 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98
dc.b 99,100,101,102,103,104,105,106,107,108,109,110,111,112
dc.b 113,114
scrollsubs:
dc.b 112,111,110,109,108,107,106,105,104,103,102,101,100,99,98
dc.b 97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79
dc.b 78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60
dc.b 59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41
dc.b 40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22
dc.b 21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
lamer:
dc.b 3
even
font:
blk.b 4352,0
angels:
blk.b 4704,0
data:
blk.b 9412,0
b: